package com.wfs.spring.aop;

import com.wfs.spring.service.aop.Encoreable;
import com.wfs.spring.service.impl.aop.DefaultEncoreable;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;
import org.springframework.stereotype.Component;

/**
 * @DeclareParents注解由三部分组成：
 * value属性指定了哪种类型的bean要引入该接口。在本例中，也就是所有实现
 * Performance的类型。（标记符后面的加号表示是Performance的所有子类型，而
 * 不是Performance本身。）
 * defaultImpl属性指定了为引入功能提供实现的类。在这里，我们指定的
 * 是DefaultEncoreable提供实现。
 * @DeclareParents注解所标注的静态属性指明了要引入了接口。在这里，我们所引入
 * 的是Encoreable接口。
 */
@Component
@Aspect
public class EncoreableIntroducer {
    @DeclareParents(value = "com.wfs.spring.service.aop.TestAopService+",
    defaultImpl = DefaultEncoreable.class)
    public static Encoreable encoreable;
}
